<?php 
    /*
     *Sessioonide kohta üksikasjalikumalt:
     * Session handling - php.net [WWW] http://php.net/manual/en/function.session-start.php (26.02.2013)
     * 
    * Sessioonid aitavad luua omapärasemaid veebilehti. Igale veebilehele 
    * sisenenud kasutajale saab nii anda unikaalse identifikaatori - niinimetatud
    * sessiooni id. Sessiooni id on salvestatud kas küpsisesse või 
    * saadetakse see url-i kaudu.
    * 
    * Nagu eelnevast võib välja lugeda, annab annab sessiooni edukalt 
    * küpsistega koos kasutada. Küpsise eeliseks on 
    * see, et tema andmed säiluvad tõenäoliselt kauem, kui sessiooni andmed,
    * kuna küpsiste andmed säilitatakse kohalikus arvutis, sessioonifaili 
    * seevastu serveris. Server laseb aga oma tiheda töö käigus tihti 
    * mittekasutatavaid andmeid maha (või tal kästakse lasta). 
    * 
    * Sessioonifaili saab säilitada kõvasti rohkem andmeid, kui 
    * küpsisesse. Nende sisu on usaldusväärsem ning võõrad ei pääse neile
    * nii lihtsalt ligi, kui küpsiste andmetele. 
    * 
    * Küpsist kasutame selleks, et ära defineerida, milline 
    * sessioonifail kuulub millisele kasutajale. Selle jaoks on vaja 
    * kasutaja brauserisse üles seada spetsiaalne sessiooniküpsis.
    * Sessiooniküpsise abil saame kindlaks teha, kus sessioonifail 
    * serveris asub. 
    * Sessiooni identifikaator, mille alusel kasutaja ja temale vastav 
    * sessioon seotud on, on tehtud üsnagi keeruliseks. Seda eesmärgiga,
    * et võõrad kasutajad isiklikel eesmärkidel võõra kasutaja sessiooni
    * sisse ei tungiks.
     * 
     * Sessiooni alustamise funktsioon session_start() PEAB OLEMA TÄIESTI FAILI
     * ALGUSES, ISEGI ENNE <html> TAGI! 
     * 
     * Järgneva sessiooni alustamise funktsiooni abil minnakse kasutaja brauserisse ning 
     * saadakse sessiooniküpsise jaoks id number. Seejärel otsib funktsioon sessiooniküpsise 
     * id alusel üles kasutajale vastava sessioonifaili ning 
     * seab end sealt potentsiaalseteks andmelugemisteks valmis. 
     * Lisaks toimib see funktsioon ka siis, kui sessioonifailile viitavat 
     * identifikaatorit (sessiooniküpsist koos vastava sisuga) ei leitud, 
     * või ei leitud saadud identifikaatori poolt viidatavat sessioonifaili. Sellisel 
     * juhul alustatakse lihtsalt uue sessiooniga.
     * Antud funktsiooni kohta leiab täpsemat informatsiooni veebilehelt 
     * Session start function - php.net [WWW] http://php.net/manual/en/function.session-start.php (26.01.2013)
     */
    session_start();
?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Sessioonid ehk sessions</title>
    </head>
    <body>
        <?php
            /*
             * Sessioonid aitavad luua omapärasemaid veebilehti. Igale veebilehele 
             * sisenenud kasutajale saab nii anda unikaalse identifikaatori - niinimetatud
             * sessiooni id. Sessiooni id on salvestatud kas küpsisesse või 
             * saadetakse see url-i kaudu.
             * 
             * Nagu eelnevast võib välja lugeda, annab annab sessiooni edukalt 
             * küpsistega koos kasutada. Küpsise eeliseks on 
             * see, et tema andmed säiluvad tõenäoliselt kauem, kui sessiooni andmed,
             * kuna küpsiste andmed säilitatakse kohalikus arvutis, sessioonifaili 
             * seevastu serveris. Server laseb aga oma tiheda töö käigus tihti 
             * mittekasutatavaid andmeid maha (või tal kästakse lasta). 
             * 
             * Sessioonifaili saab säilitada kõvasti rohkem andmeid, kui 
             * küpsisesse. Nende sisu on usaldusväärsem ning võõrad ei pääse neile
             * nii lihtsalt ligi, kui küpsiste andmetele. 
             * 
             * Küpsist kasutada selleks, et ära defineerida, milline 
             * sessioonifail kuulub millisele kasutajale. Selle jaoks on vaja 
             * kasutaja brauserisse üles seada spetsiaalne sessiooniküpsis.
             * Sessiooniküpsise abil saame kindlaks teha, kus sessioonifail 
             * serveris asub. 
             * Sessiooni identifikaator, mille alusel kasutaja ja temale vastav 
             * sessioon seotud on, on tehtud üsnagi keeruliseks. Seda eesmärgiga,
             * et võõrad kasutajad isiklikel eesmärkidel võõra kasutaja sessiooni
             * sisse ei tungiks.
             * 
             * Sessiooni loomiseks peame esmalt sessioonifaili ning s
             * 
             * 
             * 
             * 
             * <?php

session_start();

if (empty($_SESSION['count'])) {
   $_SESSION['count'] = 1;
} else {
   $_SESSION['count']++;
}
?>

<p>
Hello visitor, you have seen this page <?php echo $_SESSION['count']; ?> times.
</p>

<p>
To continue, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">click
here</a>.
</p>
             */
        
        //Salvestame sessioonifaili andmeid (meenutada "sildistatud massiivi"
        //ehk associative array-d. Tähele panna veel ka asjaolu, et järgnevad failid
        //salvestatakse serverisse, mitte kasutaja brauserisse (s.t. tema enda arvuti
        //kõvakettale). Kasutaja arvutist näeme vaid sessiooniküpsist, mis säilitab
        //vastava kasutaja sessiooni identifikaatorit, mis seejärel viitab serveris
        //olevale ning antud kasutajale vastavale sessioonifailile.
        $_SESSION['eesnimi'] = 'Reino';
        $_SESSION['perenimi'] = 'Mänd';
        
        
        //Küsime sessioonifailist andmeid (massiivi sildi ehk labeli nime abil)
        $tervitustekst = 'Tere tulemast tagasi meie veebilehele ' . $_SESSION['eesnimi'] . 
                ' ' . $_SESSION['perenimi'] . '!';
        echo $tervitustekst;
        
        //Väljastame ka sessiooni küpsise identifikaatori, mis eelnevatele serverisse
        //talletatud andmetele viitas
        if (isset($_COOKIE['PHPSESSID']))
        {
            echo '<br/><br/>';
            echo 'Serverisse talletatud sessiooni andmetele viitamiseks on küpsise poolt
                kasutaja brauserisse säilitatud selline identifikaator: ' . $_COOKIE['PHPSESSID'];
        }
        
        
        /*
         * Lisaks kõigele muule, annab sessioonide abil kasutaja lehekülastuste üle
         * arvet pidada. Seda illustreerivad järgmised instruktsioonid.
         */
        if (empty($_SESSION['kylastamisteLoendur'])) 
        {
            $_SESSION['kylastamisteLoendur'] = 1;
        } 
        else 
        {
            $_SESSION['kylastamisteLoendur']++;
        }

        echo '<br/><br/>';
        echo 'Te olete veebilehte külastanud ' . $_SESSION['kylastamisteLoendur'] . ' korda';

  
        
        /*
         * Tulevikus, kui keerulisemaid sessioone salvestada, seda ka veel suurtes
         * kogustes, tuleks meeles pidada, et serveris sessioonide kohta säilitatud
         * andmeid tuleks vahepeal ka kustutada. Seda selleks, 
         * et serverit mitte liigsete andmetega üle koormata. Ei tasu alati hoida andmeid
         * kasutajate kohta, kes pole sama lehte enam aastaid külastanud. Heaks ideeks
         * võiks olla sessioonide kustutamine pärast teatud aja möödumisest nende viimasest
         * kasutamisest alates. Sel teemal aga selle aine raames me rohkem ei peatu.
         *  
         */
        
        ?>
    </body>
</html>
